From 199cd1548fb385b592e8ff750918a3624e54e74d Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 5 Apr 2011 12:27:43 +0200 Subject: [PATCH] [broadway] Track window type in browser --- gdk/broadway/broadway-demo.c | 2 +- gdk/broadway/broadway.c | 9 +++++---- gdk/broadway/broadway.h | 3 ++- gdk/broadway/broadway.js | 7 +++++-- gdk/broadway/gdkwindow-broadway.c | 6 ++++-- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/gdk/broadway/broadway-demo.c b/gdk/broadway/broadway-demo.c index d46b336a6b..70c5ff9750 100644 --- a/gdk/broadway/broadway-demo.c +++ b/gdk/broadway/broadway-demo.c @@ -146,7 +146,7 @@ demo2 (BroadwayOutput *output) double da = 0; int i; - broadway_output_new_surface(output, 0, 100, 100, 800, 600); + broadway_output_new_surface(output, 0, 100, 100, 800, 600, 0); surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 800, 600); diff --git a/gdk/broadway/broadway.c b/gdk/broadway/broadway.c index bada96e298..478a4515e2 100644 --- a/gdk/broadway/broadway.c +++ b/gdk/broadway/broadway.c @@ -18,14 +18,12 @@ static const char base64_alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -#if 0 static void base64_uint8 (guint8 v, char *c) { c[0] = base64_alphabet[(v >> 0) & 0x3f]; c[1] = base64_alphabet[(v >> 6) & 0x3]; } -#endif static void base64_uint16 (guint32 v, char *c) @@ -685,9 +683,11 @@ broadway_output_ungrab_pointer (BroadwayOutput *output) } void -broadway_output_new_surface(BroadwayOutput *output, int id, int x, int y, int w, int h) +broadway_output_new_surface(BroadwayOutput *output, + int id, int x, int y, int w, int h, + gboolean is_temp) { - char buf[HEADER_LEN + 15]; + char buf[HEADER_LEN + 16]; int p; p = write_header (output, buf, 's'); @@ -696,6 +696,7 @@ broadway_output_new_surface(BroadwayOutput *output, int id, int x, int y, int w append_uint16 (y, buf, &p); append_uint16 (w, buf, &p); append_uint16 (h, buf, &p); + buf[p++] = is_temp ? '1' : '0'; assert (p == sizeof (buf)); diff --git a/gdk/broadway/broadway.h b/gdk/broadway/broadway.h index 2f93d27eaa..86df4df41c 100644 --- a/gdk/broadway/broadway.h +++ b/gdk/broadway/broadway.h @@ -18,7 +18,8 @@ void broadway_output_new_surface (BroadwayOutput *output, int x, int y, int w, - int h); + int h, + gboolean is_temp); void broadway_output_show_surface (BroadwayOutput *output, int id); void broadway_output_hide_surface (BroadwayOutput *output, diff --git a/gdk/broadway/broadway.js b/gdk/broadway/broadway.js index 3f34a2abb9..bcac3014f8 100644 --- a/gdk/broadway/broadway.js +++ b/gdk/broadway/broadway.js @@ -92,7 +92,7 @@ var surfaces = {}; var outstandingCommands = new Array(); var inputSocket = null; -function initContext(canvas, x, y, id) +function initContext(canvas, x, y, id, isTemp) { canvas.surfaceId = id; canvas.style["position"] = "absolute"; @@ -103,6 +103,7 @@ function initContext(canvas, x, y, id) context.globalCompositeOperation = "source-over"; document.body.appendChild(canvas); context.drawQueue = []; + context.isTemp = isTemp; context.transientParent = 0; return context; @@ -223,10 +224,12 @@ function handleCommands(cmdObj) i = i + 3; var h = base64_16(cmd, i); i = i + 3; + var isTemp = cmd[i] == '1'; + i = i + 1; var surface = document.createElement("canvas"); surface.width = w; surface.height = h; - surfaces[id] = initContext(surface, x, y, id); + surfaces[id] = initContext(surface, x, y, id, isTemp); break; case 'S': // Show a surface diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c index 24c4bb2458..4fd138fd3e 100644 --- a/gdk/broadway/gdkwindow-broadway.c +++ b/gdk/broadway/gdkwindow-broadway.c @@ -225,7 +225,8 @@ _gdk_broadway_resync_windows (void) window->x, window->y, window->width, - window->height); + window->height, + window->window_type == GDK_WINDOW_TEMP); if (GDK_WINDOW_IS_MAPPED (window)) { broadway_output_show_surface (display->output, impl->id); @@ -363,7 +364,8 @@ _gdk_broadway_display_create_window_impl (GdkDisplay *display, window->x, window->y, window->width, - window->height); + window->height, + window->window_type == GDK_WINDOW_TEMP); } static void -- 2.30.2